package com.ssh.util.image;

import java.awt.*;

/**
 * 插入图片的元素对象，用于按模板生成新的图片。
 *
 * @author 单文超,
 * @since 2011-12-06 12:05:31
 */
public class ImgElement {
    public final static int STRING_ELEMENT = 1;       // 写入图片模板对象的标示 字符串；
    public final static int IMAGE_ELEMENT = 2;        // 写入图片模板对象的标示 图片；
    public final static int RECT_ELEMENT = 3;         // 写入图片模板对象的标示 矩形块；

	private Font elementFont;        //   主题字体
	private Color elementColor;     //  主题颜色
    private int startX;                //  元素开此点（X）
	private int startY;                //  元素开此点（Y）
    private int breakWidth;           //  定义字符分行的位置，与图片边框的距离；如果不分行，参数值设置为0。
    private int width;                 //  写入图片的元素的宽
    private int height;                //  写入图片的元素的高；
    private Object elementContent;   //  写入图片模板对象（可以是文字内容（String）或者图片对象（Image））
    private int elementType;         //  写入图片模板对象 1：字符串（String），2：图片（image）, 3：矩形块（Rect）

    public ImgElement(){};

    public ImgElement(Object elementContent, Font elementFont, Color elementColor, int startX, int startY, int breakWidth, int width, int height, int elementType){
        this.elementContent = elementContent;
        this.elementFont = elementFont;
        this.elementColor = elementColor;
        this.startX = startX;
        this.startY = startY;
        this.breakWidth = breakWidth;
        this.width = width;
        this.height = height;
        this.elementType = elementType;
    }

    /**
     * 用于字符类型元素的构造函数
     *
     * @param elementContent            字符串内容
     * @param elementFont               字体
     * @param elementColor              字体颜色
     * @param startX                    字符串显示的起始位置 x轴
     * @param startY                    字符串显示的起始位置 y轴
     * @param breakWidth                定义字符分行的位置，与图片边框的距离；如果不分行，参数值设置为0
     */
    public ImgElement(Object elementContent, Font elementFont, Color elementColor, int startX, int startY, int breakWidth){
        this.elementContent = elementContent;
        this.elementFont = elementFont;
        this.elementColor = elementColor;
        this.startX = startX;
        this.startY = startY;
        this.breakWidth = breakWidth;
        this.elementType = ImgElement.STRING_ELEMENT;
    }

    /**
     * 用与图片类型元素的构造函数
     *
     * @param elementContent            图片对象
     * @param startX                    图片显示的起始位置 x轴
     * @param startY                    图片显示的起始位置 y轴
     */
    public ImgElement(Object elementContent, int startX, int startY){
        this.elementContent = elementContent;
        this.startX = startX;
        this.startY = startY;
        this.elementType = ImgElement.IMAGE_ELEMENT;
    }

    /**
     * 用与层类型元素的构造函数
     *
     * @param elementColor              层的颜色
     * @param startX                    层的起始位置 x轴
     * @param startY                    层的起始位置 y轴
     * @param width                    层的宽度
     * @param height                   层的高度
     */
    public ImgElement(Color elementColor, int startX, int startY, int width, int height){
        this.elementColor = elementColor;
        this.startX = startX;
        this.startY = startY;
        this.width = width;
        this.height = height;
        this.elementType = ImgElement.RECT_ELEMENT;
    }

    public Font getElementFont() {
		return elementFont;
	}
	public void setElementFont(Font elementFont) {
		this.elementFont = elementFont;
	}
	public Color getElementColor() {
		return elementColor;
	}
	public void setElementColor(Color elementColor) {
		this.elementColor = elementColor;
	}
	public int getStartX() {
		return startX;
	}
	public void setStartX(int startX) {
		this.startX = startX;
	}

    public int getElementType() {
        return elementType;
    }

    public int getWidth() {
        return width;
    }

    public void setWidth(int width) {
        this.width = width;
    }

    public int getHeight() {
        return height;
    }

    public void setHeight(int height) {
        this.height = height;
    }

    public void setElementType(int elementType) {
        this.elementType = elementType;
    }
	public int getStartY() {
		return startY;
	}
	public void setStartY(int startY) {
		this.startY = startY;
	}
	public Object getElementContent() {
		return elementContent;
	}
	public void setElementContent(Object elementContent) {
		this.elementContent = elementContent;
	}

    public int getBreakWidth() {
        return breakWidth;
    }

    public void setBreakWidth(int breakWidth) {
        this.breakWidth = breakWidth;
    }
	
	/**
	 * 
	 * @param red
	 * @param green
	 * @param blue
	 * @param transparent
	 * @return Color
	 */
	public static Color convertColor(int red, int green, int blue,
			int transparent) {
		return (new Color(red, green, blue, transparent));
	}

	/**
	 * 
	 * @param name
	 * @param style
	 * @param size
	 * @return Font
	 */
	public static Font converFont(String name, int style, int size) {
		return (new Font(name, style, size));
	}
}
